const express = require('express')

const app = express();

const path = require('path')

// 手写中间件

app.use((req, res, next) => {
  // 创建一个空串req
  let str = ''
  //流式写入
  req.on('data', (chunk) => {
    str += chunk.toString();
  })
  req.on('end', () => {
    str.split('&');//["name=xxx","age=xxx"]
    // 查询字符串转为对象的方法要放在end里,因为数据获取结束
    // 写法1:
    const userData = {};
    str.split('&').forEach(item => {
      //解构赋值来获取值
      const [key, value] = item.split('=')  //这里解析可以把('name=xxx')变成('name','xxx')
      userData[key] = value
    })
    // 在中间件里把请求体body的处理为一个对象,然后添加到req属性是上
    req.body = userData
  next();
  })
})

// 设置post提交
app.post('/adduser', (req, res) => {
  
  const {
    name,
    age,
  } = req.body;
  console.log( req.body);
  //判断，如果name为空取反则flase 然后进入返回失败提示
  if (!name || !age) {
    return res.send({
      code: 10001,
      mes: "添加失败",
      data: null
    })
  }
  // 没有进入失败则返回添加成功提示
  res.send({
    code: 10000,
    mes: "添加成功",
    data: null
  })
})

//静态资源
app.get('/2', (req, rsp) => {

  const filePath = path.resolve(__dirname, './02-post手写中间件.html')

  rsp.sendFile(filePath)

})


app.listen('3035', () => {
  console.log('启动成功 地址：http://127.0.0.1:3035 ');
})